
# pacotes -----------------------------------------------------------------
# Se não estiver instalado, é necessário executar install.packges()

library(dplyr)
library(rio)
library(janitor)
library(sjPlot)
library(psych)
library(Kendall)
library(openxlsx)
library(lmtest)
library(car)
library(sandwich)

# dados -------------------------------------------------------------------

dados <- import('Base_RBCP.sav')

# olhando o banco -------------------------------------------------------------

str(dados)

glimpse(dados)

names(dados)

# codificando o banco ------------------------------------------------------

# idade -------------------------------------------------------------------

dados = dados %>%
  mutate(idade_faixa = case_when(Idade <= 29 ~ 1,
                                 Idade >= 30 & Idade <= 59 ~ 2,
                                 Idade >= 60 & Idade <= 75 ~ 3))


# perfis ------------------------------------------------------------------

dados = dados %>% mutate(Tempo_filiado = ifelse(Tempo_filiado == 99, NA, Tempo_filiado))

dados = dados %>% mutate(VELHOS_NOVOS = ifelse (Tempo_filiado <= 11,1,0))

# bivariadas --------------------------------------------------------------

# kendau-b atividades partidárias e perfis

resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_CampEstNac, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_CampMunic, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_Reun, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_AbAss, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_Panfl, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_ContPol, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_FiscEl, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_Doa, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_OrgPart, method = "kendall")

# kendau-b atividades partidárias e tempo de filiação

resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_CampEstNac, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_CampMunic, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_Reun, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_AbAss, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_Panfl, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_ContPol, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_FiscEl, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_Doa, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_OrgPart, method = "kendall")

# kendau-b atividades sociais e perfis

resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_pos_MS, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_pos_Sind, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_pos_Ass, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_pos_MMulh, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_pos_MAmb, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_pos_Igr, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_pos_LGBT, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Part_pos_MEst, method = "kendall")
resultado_teste <- cor.test(dados$VELHOS_NOVOS, dados$Ambos_Outros, method = "kendall")

# kendau-b atividades sociais e tempo de filiação

resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_pos_MS, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_pos_Sind, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_pos_Ass, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_pos_MMulh, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_pos_MAmb, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_pos_Igr, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_pos_LGBT, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Part_pos_MEst, method = "kendall")
resultado_teste <- cor.test(dados$Tempo_filiado, dados$Ambos_Outros, method = "kendall")

# escala de ativismo convencional -----------------------------------------

# fatorial ---------------------------------------------------------------

ipp = dados %>%
  select("Part_CampEstNac", "Part_FiscEl", "Part_Reun", "Part_AbAss",  
         "Part_CampMunic", "Part_OrgPart", "Part_Panfl", "Part_Doa", 
         "Part_ContPol")

cortest.bartlett(ipp)
KMO(ipp)

fa_resultado <- fa(ipp,  rotate = "varimax", fm = "ml", cor = "tetrachoric")
print(fa_resultado)

# criando a escala --------------------------------------------------------

variaveis_selecionadas <- c("Part_CampEstNac", "Part_FiscEl", "Part_Reun", "Part_AbAss",  
                           "Part_CampMunic", "Part_OrgPart", "Part_Panfl", "Part_Doa", 
                           "Part_ContPol")

# Crie a nova variável que é a soma das variáveis binárias
dados$Indice_Participacao_Partidaria <- rowSums(dados[, variaveis_selecionadas])

# Padronize a nova variável para uma escala de 0 a 9
dados$Indice_Participacao_Partidaria <- scale(dados$Indice_Participacao, center = FALSE, scale = 9 / max(dados$Indice_Participacao, na.rm = TRUE))

# Exiba as primeiras linhas do dataframe para verificar os resultados
prop.table(table(dados$Indice_Participacao_Partidaria))


# escala ativismo não convencional ----------------------------------------

# fatorial -----------------------------------------------------------------


ips = dados %>% 
  select( "Part_pos_Sind", "Part_pos_MAmb", "Part_pos_MMulh", "Part_pos_Ass", 
          "Part_pos_LGBT", "Part_pos_MS", "Part_pos_Igr", "Part_pos_MEst", "Ambos_Outros")


cortest.bartlett(ips)
KMO(ips)

fa_resultado <- fa(ips,  rotate = "varimax", fm = "ml", cor = "tetrachoric")
print(fa_resultado)


fatorial = fa(ips, nfactors = 1, rotate = "varimax", fm = "ml", cor = "tetrachoric")


# reportando --------------------------------------------------------------

# criando a escala --------------------------------------------------------

variaveis_selecionadas <- c("Part_pos_Sind", "Part_pos_MAmb", "Part_pos_MMulh", "Part_pos_Ass", 
                            "Part_pos_LGBT", "Part_pos_MS", "Part_pos_Igr", "Part_pos_MEst", "Ambos_Outros")

# Crie a nova variável que é a soma das variáveis binárias
dados$Indice_Participacao_Social <- rowSums(dados[, variaveis_selecionadas])

# Padronize a nova variável para uma escala de 0 a 8
dados$Indice_Participacao_Social <- scale(dados$Indice_Participacao_Social, center = FALSE, scale = 9 / max(dados$Indice_Participacao_Social, na.rm = TRUE))

# Exiba as primeiras linhas do dataframe para verificar os resultados
prop.table(table(dados$Indice_Participacao_Social))

# descritivas indices ----------------------------------------------------
mean(dados$Indice_Participacao_Partidaria)
sd(dados$Indice_Participacao_Partidaria)
mean(dados$Indice_Participacao_Social)
sd(dados$Indice_Participacao_Social)

# regressões preditores IPP ----------------------------------------------------

# regressão ipp e perfis

reg1 <- lm(Indice_Participacao_Partidaria ~ Sexo + Escolaridade + Renda + idade_faixa +
             VELHOS_NOVOS, data = dados)
summary(reg1)


# multicolinearidade

vif(reg1)

# corrigindo heterocedasticidade

reg_het1 = coeftest(reg1, vcov. = vcovHC, type = 'HC1')

# regressão ipp e tempo de filiação
reg2 <- lm(Indice_Participacao ~ Sexo + Escolaridade + Renda + idade_faixa +
           Tempo_filiado, data = dados)

summary(reg2)

# multicolinearidade

vif(reg2)

# corrigindo heterocedasticidade

reg_het2 = coeftest(reg2, vcov. = vcovHC, type = 'HC1')

#  regressão ipp e tempo de filiação + perfis e IPS
reg3 <- lm(Indice_Participacao ~ Sexo + Escolaridade + Renda + idade_faixa +
             Tempo_filiado + 
             VELHOS_NOVOS + Indice_Participacao_Social, data = dados)

summary(reg3)

# multicolinearidade

vif(reg3)

# heterocedasticidade

reg_het3 = coeftest(reg3, vcov. = vcovHC, type = 'HC1')


# regressões preditores IPS ----------------------------------------------------

# regressão ipp e perfis

reg4 <- lm(Indice_Participacao_Social ~ Sexo + Escolaridade + Renda + idade_faixa + 
              VELHOS_NOVOS, data = dados)

summary(reg4)

# multicolinearidade

vif(reg4)

# heterocedasticidade

reg_het4 = coeftest(reg4, vcov. = vcovHC, type = 'HC1')

# regressão ipp e tempo de filiação

reg5 <- lm(Indice_Participacao_Social ~ Sexo + Escolaridade + Renda +
            idade_faixa + Tempo_filiado, data = dados)

summary(reg5)

# colinearidade

vif(reg5)

# heterocedasticidade

reg_het5 = coeftest(reg5, vcov. = vcovHC, type = 'HC1')


# regressão ipp e tempo de filiação + perfis e IPS

reg6 <- lm(Indice_Participacao_Social ~ Sexo + Escolaridade + Renda +
             idade_faixa + Tempo_filiado + 
             VELHOS_NOVOS + Indice_Participacao, data = dados)

summary(reg6)

# colinearidade

vif(reg6)

# heterocedasticidade

reg_het6 = coeftest(reg6, vcov. = vcovHC, type = 'HC1')


# tabelas ------------------------------------------------------------------

# participação partidária
tab_model(reg1,reg2,reg3)

# participação social
tab_model(reg4,reg5,reg6)


# correlação entre as variáveis dependentes -------------------------------

# correlação entre as dependentes -----------------------------------------

resultado_teste <- cor.test(dados$Tempo_filiado, dados$VELHOS_NOVOS, method = "kendall")
resultado_teste <- cor.test(dados$Indice_Participacao_Social, dados$Indice_Participacao_Partidaria, method = "pearson")


